Skip to content

Web: a11y improvements + new properties - #3381

Merged
Oleksandr Karpovich (eymar) merged 13 commits into
JetBrains:jb-mainfrom
ApoloApps:a11yWebImprovements
Sep 10, 2026
Merged

Web: a11y improvements + new properties#3381
Oleksandr Karpovich (eymar) merged 13 commits into
JetBrains:jb-mainfrom
ApoloApps:a11yWebImprovements

Conversation

@ApoloApps

@ApoloApps Apolo (ApoloApps) commented Sep 3, 2026

Copy link
Copy Markdown

Removed the slider and progressbar part of this PR since I have seen Oleksandr already working on it.

1. Use transform instead of left/top to avoid layout reflows, which are the most expensive operations possible
Cancelled, breaks dom scrolling driving compose scrolling
2. Use more specialized collections to improve performance avoiding boxing, allocations and overall overhead1
3. Use htmlNode.textContent also to avoid layout reflows
4. Added support for aria-readonly, SemanticsProperties.MaxTextLength and SemanticsProperties.Selected

Release Notes

Fixes - Web

  • Fix missing aria attributes for textfields (read only and max text length) and selection status state

@ApoloApps
Apolo (ApoloApps) marked this pull request as ready for review September 3, 2026 23:46
@eymar

Copy link
Copy Markdown
Member

Could you PTAL at the failing A11yScrollTest?

@eymar

Copy link
Copy Markdown
Member

Apolo (@ApoloApps) do the web tests pass for you locally?

@ApoloApps

Copy link
Copy Markdown
Author

Apolo (@ApoloApps) do the web tests pass for you locally?

nope, still investigating...

Apolo (ApoloApps) and others added 3 commits September 9, 2026 16:43
…ng style transforms, which does not participate in dom calculations, so overflows are not applied correctly
… removing hardcodes values (which do not generalize) and some awaits related to compose scolling not having finished, causing tests to not assert correctly because the changes are not being awaited
@ApoloApps

Apolo (ApoloApps) commented Sep 9, 2026

Copy link
Copy Markdown
Author

Oleksandr Karpovich (@eymar) okay seems to work locally and I have started the web tests in my fork's github actions and waiting for the results (CONFIRMED THEY PASS✅🥳). I do think all of it is fixed and I'm pretty confident.

  • offsetLeft/offsetTop has to be used instead of style transforms since dom scrolling is not affected by the transforms
  • hardcoding px values for tests was a bad idea, replaced it with a dynamic dom based approach. There was also some timeouts based on dom scrolling not finishing to pass to compose scroll, which didnt assert and caused timeouts. (these changes were merged following Fable 5 conversation)
    Another problem with tests may also stem from the fact that window must be on the front and not backgrounded since Chrome causes throttling in some promises (rAf and other timers). Does seem to reproduce on my machine Win11 Chrome, when window is behind intellij idea for example, my workaround: manually focusing window or applying these flags to karma test config file:
// Keep requestAnimationFrame & timers running when the Chrome window
                // is occluded or unfocused (frequent for local runs on Windows):
                 "--disable-backgrounding-occluded-windows",
                 "--disable-renderer-backgrounding",
                "--disable-background-timer-throttling",
                 "--disable-features=CalculateNativeWinOcclusion"

@eymar
Oleksandr Karpovich (eymar) merged commit 68e5b0c into JetBrains:jb-main Sep 10, 2026
19 checks passed
@ApoloApps
Apolo (ApoloApps) deleted the a11yWebImprovements branch September 10, 2026 10:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants